Effectuer plusieurs sauts SSH avec la configuration SSH et un hôte de saut

nous allons vous présenter quelques astuces pour maquiller votre flux de travail en SSH à l'aide du fichier ~/.ssh/config

Démarrer avec SSH

SSH (Secure Socket sHell) permet d'accéder à un autre ordinateur en toute sécurité. Le cas d'utilisation le plus courant est une simple connexion SSH à partir du système A -> système B donc :

ssh admin@systemb.domain.com -p 22222

Sous le capot, SSH initie une connexion à distance au système sur le port 22222 (le port SSH par défaut est 22) en utilisant le nom d'utilisateur spécifié, dans ce cas admin. Par défaut, SSH utilisera le nom d'utilisateur de votre système local, donc si celui-ci correspond, la partie user@ n'est pas nécessaire.

Fichier de configuration de SSH

Le fichier de configuration SSH est un moyen de saisir des informations spécifiques à l'hôte, ce qui vous évite de devoir le spécifier à chaque connexion. Dans sa forme la plus simple, ce fichier se trouve généralement dans ~/.ssh/config. En utilisant notre exemple ci-dessus :

Host systemb

  Hostname systemb.domain.com

  User admin

  Port 22222

Avec ce qui précède dans notre fichier ~/.ssh/config, nous pouvons maintenant effectuer la même connexion qu'auparavant avec :

ssh systemb

Multiple sauts (hops)

Il est utile de passer d'un hôte à l'autre, mais un modèle de sécurité décent pourrait impliquer un hôte bastion SSH durci.

Considérez le schéma suivant. Dans ce scénario, vous aimeriez faire de la SSH depuis votre ordinateur portable vers le serveur A. Pour des raisons de sécurité, il ne serait peut-être pas judicieux d'ouvrir le serveur A directement sur Internet,

 

C'est là qu'un hôte bastion (hôte de saut) prend tout son sens. Son seul rôle est de gérer en toute sécurité le trafic SSH et de constituer un point d'entrée unique sur votre réseau. Il peut être judicieux de s'assurer que cette boîte n'est accessible que via un VPN et/ou avec 2FA selon votre niveau de paranoïa. Cela signifie que vous pouvez toujours avoir un accès à distance tout en rendant beaucoup plus difficile pour un attaquant distant de pénétrer dans un système vulnérable.

En utilisant notre fichier de configuration SSH, nous pouvons facilement faire apparaître le bastion comme transparent pour l'utilisateur final :

Host bastion

  Hostname bastion.domain.com

  Port 2222 # a non-standard port is a good idea

  User ironicbadger

 

Host servera

  Hostname servera.lan.local

  User servera-user

  ProxyCommand ssh bastion -W %h:%p

Pour vous connecter à servera, exécutez ssh servera et le reste se fera pour vous en fonction du fichier de configuration.

Ce qui nous permet de sauter bastion de manière transparente est :

ProxyCommand ssh bastion -W %h:%p

Plus précisément le paramètre -W. La page de manuel SSH dit de -W host:port, "demande que l'entrée et la sortie standard sur le client soient transmises à l'hôte sur le port via le canal sécurisé". Cela signifie que tout le trafic est transféré de manière transparente via l'hôte spécifié. Il est possible d'utiliser netcat dans le même but, mais ne pas dépendre d'un binaire externe est la solution la plus intelligente si vous le pouvez.

Résumé

Grâce à cette technique, il devient possible de sauter à travers plusieurs hôtes, plusieurs fois avec une seule commande et vous devriez pouvoir créer un point d'entrée public sécurisé dans votre réseau tout en sachant que votre réseau local (LAN) est sûr.

Une autre astuce utile pour sortir de derrière les proxies restrictifs est l'utilisation de corkscrew (tire-bouchon).

Host bastion

  User some-user

  Port 2222

  Hostname bastion.domain.com

  ProxyCommand corkscrew proxy.company.com 8080 %h %p

Il faut passer par le port 443 pour que la plupart des proxies sortants ne puissent pas faire la différence et permettre ainsi la sortie du trafic.